A NAND flash memory is known as a kind of electrically programmable nonvolatile storage devices. As a technique for increasing the data storage capacity of the NAND flash memory, an MLC (Multi Level Cell) storage scheme in which the threshold distribution of a memory cell is subdivided to allow storage of a plurality of bits in each memory cell is available.
Data write and read for a NAND flash memory is done using, as a unit, a page formed by memory cells commonly connected to each word line. In the MLC memory, data of a plurality of pages corresponding to the number of bits storable in one memory cell are stored in physically identical memory cells. For example, in a 4-value storage device, two pages share the same memory cell. One of these two pages which has a smaller address is called a lower page, while the other having a larger address is called an upper page.
Upon receiving a write command from a host device, a NAND flash memory may write data to an upper page which shares a memory cell with a lower page to which data is written by another previous write command because the memory writes data from a page next to pages to which data are written by write operations up to the immediately preceding write operation. When the NAND flash memory is powered off during the data write to the upper page, the write access to the upper page by the current write command fails, and at the same time the data previously written to the lower page is also destroyed. This impairs the reliability of the NAND flash memory.